This section defines file and directory structure for using GDL. This is not required; for instance, an implementation may choose to handle GDL by reading it from strings compiled into the program. However, the standard Xconq library and implementation does adhere to the conventions described here.
A game module is a set of forms in a text file, which has an extension of .g
.
By convention, the first form in the file is a game-module
form that defines
properties of the module. If the interface has any sort of preview for a particular
module, it can then read only the first form, rather than the entire file.
Some interfaces include a game selection dialog, which lists a set of games from which
to choose, along with a little information about each. The file game.dir
in
the library directory contains this list, which is simply a list of module name strings:
( ;; games that should appear in new game selection dialogs "1756" "cave" "cherbourg" "classic" "coral-sea" "crater-lake" )
Xconq does not currently enforce any sort of standard on file names, but for maximum portability, the file name should not include mixed case, it should consist only of alphabetic and numeric characters and hyphen, and should be less than 12 characters in length, with 8 of those distinct from any other name in the same directory. Since Xconq implementations typically use the file name as a way to find modules, these restrictions should apply to module names as well.
Image files are library files with the extension .imf
. Usually each image
file contains a group of images related in some way, perhaps by a common theme
or by use in a particular game. Xconq implementations find images either by
a method specific to the platform (such as resource files), or by looking up the
image's location in the image directory imf.dir
.
The image directory is just a set of pairs of image name and imf file, with markers
at beginning and end of the file:
ImageFamilyName FileName amulet fantasy.imf ant insects.imf anvil-and-crown fantasy.imf ap standard.imf archer ancient.imf . .
Note that while game.dir
is a GDL-syntax form, imf.dir
is not.
It should rarely be necessary to modify imf.dir
directly; the scripts
makedir.sh
and makedir.pl
in the standard library directory
are Unix shell and Perl scripts, each of which will generate imf.dir
from a
given list of files, such as *.imf
in the library. You should run
one of these after adding to a library image file.